package br.ufrn.sigaa.biblioteca.informacao_referencia.negocio;

import java.util.Date;

import br.ufrn.sigaa.biblioteca.informacao_referencia.negocio.ProcessadorRegistraConsultasDiariasMateriaisLeitor.QuantidadeConsultaClasse;

/**
 * Guarda temporariamente a quantidade de consultas por classe (CDU ou Black) registradas
 */
public class QuantidadeConsultaClasse{
	
	int idBiblioteca;
	int idColecao;
	int idTipoMaterial;
	int turno;
	Date data;
	String classeCDU;
	String classeBlack;
	int quantidade = 0;
	
	public QuantidadeConsultaClasse(int idBiblioteca, int idColecao,
			int idTipoMaterial, int turno, Date data, String cdu, String black) {
		super();
		this.idBiblioteca = idBiblioteca;
		this.idColecao = idColecao;
		this.idTipoMaterial = idTipoMaterial;
		this.turno = turno;
		this.data = data;
		this.classeCDU = cdu;
		this.classeBlack = black;
	}
	
	/**
	 *  Incrementa a quantidade de consultas.
	 */
	public void incrementaQuantidadeConsultas(){
		quantidade++;
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + getOuterType().hashCode();
		result = prime * result + ((classeCDU == null) ? 0 : classeCDU.hashCode());
		result = prime * result + ((classeBlack == null) ? 0 : classeBlack.hashCode());
		result = prime * result + ((data == null) ? 0 : data.hashCode());
		result = prime * result + idBiblioteca;
		result = prime * result + idColecao;
		result = prime * result + idTipoMaterial;
		result = prime * result + turno;
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		QuantidadeConsultaClasse other = (QuantidadeConsultaClasse) obj;
		if (!getOuterType().equals(other.getOuterType()))
			return false;
		if (classeCDU == null) {
			if (other.classeCDU != null)
				return false;
		} else if (!classeCDU.equals(other.classeCDU))
			return false;
		if (classeBlack == null) {
			if (other.classeBlack != null)
				return false;
		} else if (!classeBlack.equals(other.classeBlack))
			return false;
		if (data == null) {
			if (other.data != null)
				return false;
		} else if (!data.equals(other.data))
			return false;
		if (idBiblioteca != other.idBiblioteca)
			return false;
		if (idColecao != other.idColecao)
			return false;
		if (idTipoMaterial != other.idTipoMaterial)
			return false;
		if (turno != other.turno)
			return false;
		return true;
	}

	private ProcessadorRegistraConsultasDiariasMateriaisLeitor getOuterType() {
		return ProcessadorRegistraConsultasDiariasMateriaisLeitor.this;
	}

	@Override
	public String toString() {
		return
				"Biblioteca: "+idBiblioteca+
				" Colecao: "+idColecao+
				" Tipo Material: " +idTipoMaterial+
				" Turno: "+turno+
				" Data: "+data+
				" CDU: "+classeCDU+
				" Black: "+classeBlack+
				" Quantidade: "+quantidade;
	}

	//////////////// sets e gets /////////////////
	
	public int getIdBiblioteca() { return idBiblioteca; }
	public int getIdColecao() { return idColecao; }
	public int getIdTipoMaterial() { return idTipoMaterial; }
	public int getTurno() { return turno; }
	public Date getData() { return data; }
	public String getClasseCDU() { return classeCDU; }
	public String getClasseBlack() { return classeBlack; }
	public int getQuantidade() { return quantidade; }

	
} 
